/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.dao.impl;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import pe.com.cotelasa.common.dao.DaoImpl;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOProducto;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.entidad.CategoriaArticulo;
import pe.com.cotelasa.scp.entidad.Producto;

/**
 * 
 * @author Esparza
 */
@SuppressWarnings("unchecked")
@Repository("daoProducto")
public class DAOProductoImpl extends DaoImpl<Producto, Integer> implements
		IDAOProducto, Serializable {

	private static Logger logger = Logger.getLogger(DAOProductoImpl.class);

	@Autowired
	private SessionFactory sessionFactory;

	@Transactional
	public Collection<Producto> obtenerProductosPrenda() throws DAOException {
		System.out.println("aca1");
		List<Producto> listaProductosPrenda = new ArrayList<Producto>();
		try {
			sessionFactory.getCurrentSession().flush();
			System.out.println("aca2");
			listaProductosPrenda = (sessionFactory.getCurrentSession()
					.createCriteria(Producto.class)
					.add(Restrictions.eq("tipoProducto", "P")).add(Restrictions
					.eq("estadoRegistro", ESTADO_REGISTRO.ACTIVO.getValor()))).list();

			for (int i = 0; i < listaProductosPrenda.size(); i++) {
				System.out.println(listaProductosPrenda.get(i)
						.getNombreComercial() + "!!!!!!!!!!!!!!!!");
			}
		} catch (Exception e) {
			throw new DAOException(e.getMessage(), e);
		}

		return listaProductosPrenda;
	}

	@Transactional
	public Collection<Producto> obtenerProductosTela() throws DAOException {
		System.out.println("aca1");
		List<Producto> listaProductosTela = new ArrayList<Producto>();
		try {
			sessionFactory.getCurrentSession().flush();
			System.out.println("aca2");
			// listaProductosTela =
			// sessionFactory.getCurrentSession().createCriteria(Producto.class).add(Restrictions.eq("tipoProducto","T")).add(Restrictions.eq("estadoRegistro",ESTADO_REGISTRO.ACTIVO)).list();
			// Query q =
			// sessionFactory.getCurrentSession().createQuery("from producto where ")createQuery("from Auto auto where auto.aniocreacion < 1985 ");
			// List autos = q.list();
			System.out.println("!!!!!!!!!!!!!!!!!!");
			for (int i = 0; i < listaProductosTela.size(); i++) {
				System.out.println(listaProductosTela.get(i)
						.getNombreComercial() + "!!!!!!!!!!!!!!!!");
			}
		} catch (Exception e) {
			throw new DAOException(e.getMessage(), e);
		}

		return listaProductosTela;
	}

}
